package top.hkyzf.study.leetcode.string;

import org.junit.Test;

/**
 * @author 朱峰
 * @date 2020-12-16 17:27
 */
public class 统计一致字符串的数目_1684 {

    @Test
    public void testSameString() {
        int result = countConsistentStrings1("ab", new String[]{"asd", "abb", "aaaa", "bbb", "aba"});
        System.out.println(result);
    }

    /**
     * 1684. 统计一致字符串的数目
     * 自己解题
     * @param allowed
     * @param words
     * @return
     */
    public static int countConsistentStrings1(String allowed, String[] words) {
        int count = 0;
        boolean allow = false;
        char[] alloweds = allowed.toCharArray();
        // 循环校验每个单词
        for(int i=0; i<words.length; i++) {
            char[] c_words = words[i].toCharArray();
            // 循环每个字母
            for(int j=0; j<c_words.length; j++) {
                // 在允许字符中找到了字符，可以通过
                boolean find = false;
                // 循环对比是否是被允许的字母
                for(int k=0; k<alloweds.length; k++) {
                    if(c_words[j] == alloweds[k]) {
                        find = true;
                        break;
                    }
                }
                // 最后一次循环，还是全都允许，则合法
                if(j == c_words.length-1 && find) {
                    allow = true;
                    break;
                }
                // 如果当前字符找到了，直接循环下一个字符
                if(find) {
                    continue;
                    // 如果所有字符循环完毕都没有找到，则这个字符不合法
                } else {
                    allow = false;
                    break;
                }
            }
            // 单词所有字母判断完毕，全都是允许则计数加一，重置标志
            if(allow) {
                count++;
                allow = false;
            }
        }
        return count;
    }

    /**
     * 1684. 统计一致字符串的数目
     * 别人思路解题
     * @param allowed
     * @param words
     * @return
     */
    public static int countConsistentStrings2(String allowed, String[] words) {
        int count = 0;
        char[] alloweds = allowed.toCharArray();
        for(String word : words){
            for(char c_allow : alloweds){
                word = word.replace(c_allow,' ');
            }
            if(word.trim().equals("")){
                count++;
            }
        }
        return count;
    }

}
